    /***********************************************************************
    * Copyright 2023 客户公司名称
    * @URL: 
    * @ProjectName: 项目名称
    * @Description: 功能描述
    * Modification Log :
    ------------------------------------------------------------------------
    * Developer                   Date                   Description
    * ----------------------------------------------------------------------
    * 陈秋雨				2023-10-19      根据客户名来模糊搜索，每面展示5条数据，可以进行分页查询 
    ***********************************************************************/
    public class MyAccountController {
        // 属性声明
        public Account account { get; set; } // 用于搜索的客户
        public List<Account> accountList { get; set; } // 客户列表
        public Integer currentPage { get; set; } // 当前页码
        public Integer pageSize { get; set; } // 页面大小
        public Integer totalCounts { get; set; } // 客户总数
        public Integer totalPages { get; set; } // 总页数
        public String errorMessage { get; set; }//错误信息
        public String currentPageText { get; set; }//跳转页面成功修改后的页页码
        

        // 构造函数，初始化相关属性并获取数据
        public MyAccountController() {
            account = new Account();
            currentPage = 1;    //当前页码
            pageSize = 5;   //页面大小
            getMyAccounts(); // 初始化时获取数据
            errorMessage = '';//初始化错误信息
            currentPageText = '1';//初始化跳转页面成功修改后的页页码
            
        }

        /**
        * 功能描述  搜索方法，重置页码并调用获取数据方法
        * @Author   陈秋雨
        * @DateTime 2023-10-23,
        * @param 无
        * @return  无
        */

        public void search() {
            currentPage = 1; // 将页码重置为1
            // setcurrentPage(currentPage);
            getMyAccounts();
        }

        /**
        * 功能描述  获取客户信息的方法，根据搜索关键字进行模糊查询
        * @Author   陈秋雨
        * @DateTime 2023-10-23,
        * @param 无
        * @return  无
        */
        public void getMyAccounts() {

            //查询条件
            String searchKey = String.isBlank(account.Name) ? '%' : '%' + account.Name + '%';//客户名为空查询全部，反之按条件查询

            //搜索客户信息
            accountList = [ SELECT    Id                                //Id
                                    ,Name                               //客户名Id
                                    ,AccountSource                      //来源    
                                    ,Type                               //类别
                                    ,Website                            //网址
                                    FROM Account                        //客户
                                    WHERE Name LIKE :searchKey          //查询条件
                                    ORDER BY Name                       //客户名字
                                    LIMIT : pageSize                    //页面大小
                                    OFFSET : ( ( currentPage - 1 ) * pageSize ) ];//偏移量 

            //搜索符合条件的客户总数
            totalCounts = [ SELECT COUNT () 
                            FROM Account 
                            WHERE Name LIKE : searchKey];
            //总页数 = ( 总记录数 + 页面大小 - 1 ) / 页面大小
            totalPages = ( totalCounts + pageSize - 1 ) / pageSize;
        
        }

        /**
        * 功能描述  前往指定页码的方法，调用获取客户信息方法
        * @Author   陈秋雨
        * @DateTime 2023-10-23,
        * @param 无
        * @return  无
        */
        public PageReference  goToPage() {
            if ( currentPage <= 0 || currentPage > totalPages ) {
                errorMessage = '请输入有效的页码';
                // currentPage=1;
                search();
                return null;
            }else{
                // 页码符合规范，继续执行逻辑
                errorMessage = null;
                // 更新当前页数的输出文本
                // updateCurrentPageText();
                setcurrentPage(currentPage);
                getMyAccounts();
                return null;
            }
        
        }
    
        
        /**
        * 功能描述  跳转到第一页
        * @Author   陈秋雨
        * @DateTime 2023-10-23,
        * @param 无
        * @return  无
        */
        public void goToFirstPage() {
            currentPage = 1;
            goToPage();
        }

        /**
        * 功能描述  下一页方法，如果当前页不是最后一页，则前往下一页
        * @Author   陈秋雨
        * @DateTime 2023-10-23,
        * @param 无
        * @return  无
        */
        public void nextPage() {
            if (currentPage < totalPages) {
                currentPage++;
                goToPage();
            }
        }
        
        
        /**
        * 功能描述  上一页方法，如果当前页不是第一页，则前往上一页
        * @Author   陈秋雨
        * @DateTime 2023-10-23,
        * @param 无
        * @return  无
        */
        public void previousPage() {
            if (currentPage > 1) {
                currentPage--;
                goToPage();
                
            }
        }
    
        
        /**
        * 功能描述  跳转到最后一页
        * @Author   陈秋雨
        * @DateTime 2023-10-23,
        * @param 无
        * @return  无
        */
        public void goToLastPage() {
            currentPage = totalPages;
            if(currentPage!=0){
                goToPage();
            }else {
                currentPage = 1;
                goToPage();
            }
        }
    
        /**
        * 功能描述  跳转页面成功后修改页码
        * @Author   陈秋雨
        * @DateTime 2023-11-05,
        * @param 无
        * @return  无
        */
        // private void updateCurrentPageText() {
        //     currentPageText = String.valueOf(currentPage);
        // }

        private void setcurrentPage(Integer currentPage) {
            this.currentPage = currentPage;
        }

    

    } 

